package mylib.archive.y2012.m09.IFMO_Train;

import mylib.dir.FastInputReader;
import mylib.dir.GeometryUtils;
import mylib.dir.LineF;
import mylib.dir.PointF;

import java.io.PrintWriter;

public class TaskB {
    public void solve(int testNumber, FastInputReader in, PrintWriter out) {
        int R = in.nextInt();
        double k = in.nextDouble();
        int x0 = in.nextInt();
        int y0 = in.nextInt();
        int step = 2000000;
        final double EPS = 1e-6;
        double h = 1.0 / step;
        for (int iter = 0; iter < step; ++iter) {
            double alpha = iter * h * Math.PI;
            double x1 = x0 + Math.cos(alpha);
            double y1 = y0 + Math.sin(alpha);
            LineF line = new LineF(new PointF(x0, y0), new PointF(x1, y1));
            double ry1 = 0;
            double ry2 = 0;
            double rx1 = 0;
            double rx2 = 0;

            if (Math.abs(line.A) < EPS) {
                ry2 = ry1 = -line.C / line.B;
                rx1 = Math.sqrt(R * R - ry2 * ry2);
                rx2 = -rx1;
            } else {
                double a = line.B * line.B + line.A * line.A;
                double b = 2 * line.B * line.C;
                double c = line.C * line.C - R * R * line.A * line.A;
                double D = b * b - 4 * a * c;
                if (D < -EPS) continue;
                D = Math.max(D, 0);
                ry1 = (-b + Math.sqrt(D)) / (2 * a);
                ry2 = (-b - Math.sqrt(D)) / (2 * a);
                rx1 = (-line.B * ry1 - line.C) / line.A;
                rx2 = (-line.B * ry2 - line.C) / line.A;
            }
            double s1 = getSquare(rx1, ry1, rx2, ry2, R);
            double s2 = Math.PI * R * R - s1;
            if (s1 > s2) {
                double tmp = s1;
                s1 = s2;
                s2 = tmp;
            }
            if (Math.abs(s2 / s1 - k) < 1e-5) {
                out.print(line.A + " " + line.B + " " + line.C);
                return;
            }
        }
        throw new RuntimeException();
    }

    private double getSquare(double x1, double y1, double x2, double y2, int r) {
        double a = Math.sqrt(x1 * x1 + y1 * y1);
        double b = Math.sqrt(x2 * x2 + y2 * y2);
        double c = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
        double alpha = 0;
        try {
            alpha = GeometryUtils.getAngle(a, b, c);
        } catch (GeometryUtils.TrianglePropertyDoesntHoldException e) {
            e.printStackTrace();
        }
        double p = (a + b + c) / 2;
        double st = Math.sqrt(p * (p - a) * (p - b) * (p - c));
        return alpha * r * r / 2 - st;
    }
}
